This invention relates to the protection of computer software, and more particularly to a combination of software and hardware components which software when executed in a prescribed manner generates first and second keys which when processed by an algorithm decoder produce a control key used to protect the software from unauthorized use.
Hardware protected software programs are generally sold to end users who receive a distribution diskette containing the desired program and a hardware device which contains a matching key. In order to operate the software, the supplied hardware portion is plugged into a specified port of the computer establishing a communications path between the hardware device and the computer. If the hardware contains the correct code which constitutes the key for that matching piece of software, then the software is allowed to continue. Of course, the wrong key or the absence of such a key prevents the operation of the software. Copies of the software can be duplicated easily permitting backup copies to be made. However, much effort is spent in the industry to prevent the unauthorized duplication of the hardware or otherwise emulating the hardware by making the algorithm producing the key difficult to decode which prevents or deters the unauthorized use of multiple copies without an identical key for each identical copy.
In order to facilitate mass distribution of software by the developer, the software is replicated en masse without regard to individualization. Accordingly, hardware devices are generally supplied identically, but under the manufacturer's control and distribution. Each device contains a code that is unique to a given piece of software or application product. If it is desired to purchase additional but different types of software, other unique coded hardware devices must be supplied for each of the protected software applications or new version of software, which eventually presents a problem in logistics.
First, the end user begins to acquire a multitude of hardware units which must generally share the same port as well as increasing the volume of space required to store all of the hardware as well as the time consumed in properly identifying them and associating them with each piece of software. Second, in the event that other modules or software that work in conjunction with the original distributed software are acquired at a later time, additional keys must be obtained which may impose further distribution problems. Third, for many reasons, such as registering the rightful owner of the original software, providing updates and other marketing and economic reasons, software developers have resorted to serialization of the software per se at the time of manufacture as well as requiring mail-in registration cards for verification and control of the legal end use of the product. Serialization of the software requires special handling and equipment and presents problems of logistics. The present invention is directed to the amelioration of these problems which still permit mass replication of the software desired to be protected while preventing the unauthorized use of such software.